#if !defined(_RSS_FEED_H_)
#define _RSS_FEED_H_

#include <string>
#include <map>

#include "Item.h"
#include "tinyxml.h"
#include "Curl.hpp"

class RSSParser;
class RSS20Parser;

using namespace std;


class Feed
{
	/*store RSS feed url*/
	string url_;

	/*store etag data*/
	string etag_;

	/*store the RSS feed content*/
	string data_;

	cURL::EasyInterface easy_;

	RSSParser *parser_;
	
	map<string,Item*> items_;
public:
	Feed(const string& url);
	
	~Feed();

	string get_url()
	{
		return url_;
	}
	void set_url(string& url)
	{
		url_=url;
	}
	map<string,Item*>::const_iterator begin_items()
	{
		return items_.begin();
	}
	map<string,Item*>::const_iterator end_items()
	{
		return items_.end();
	}

	/*reset url address, and free the memory kept in the map*/
	void Reset(string& new_url);

	/*check the url of the RSS feed, get and store each item*/
	void CheckFeed();



	//void RetrieveItems()
	//{
	//	map<string,Item*>::iterator it=items_.begin();
	//	while(it!=items_.end())
	//	{
	//		Item* itms=it->second;
	//		itms->printElems();

	//		easy_.Reset(itms->getURL());
	//		switch (easy_.PerformRequest())
	//		{
	//		case 200:
	//			{
	//				etag_ = easy_.GetResponseEtag();
	//				data_=easy_.GetResponseData();
	//				//cout<<result<<endl;
	//				parse(data_);
	//				break;
	//			} 	
	//		default:
	//			{
	//			}
	//		}	

	//		it++;
	//	}
	//}


};





#endif
